The present invention relates generally to computer processing, and more particularly to techniques for tracking and exchanging incremental changes to hierarchical objects.
Many complex software applications have been developed to assist business enterprises manage and operate their businesses. An important class of such software applications focuses in the area of customer relationship management (CRM). A CRM application allows an enterprise to maintain track of various “entities” such as accounts, contacts, products, activities, service requests, and so on, and to define the relationships between the entities with sets of rules (e.g., business opportunities). Each entity and business function may be represented at a higher layer as a “business object”, which may represent a hierarchical collection of data and functions that describe the entity or business function as well as the operations capable of being performed on or by the entity or business function.
Many instances of the business objects may be formed from records in various (lower-level) tables maintained in a database, which is typically associated with a particular schema and meta data. The schema describes the organization and format of the database, e.g., the specific tables used to describe and identify the data stored in the database. The meta data defines the structure of the schema and comprises data about the underlying physical data stored in the database. The database is typically updated over time to reflect changes to the data stored in the database. For example, any modification, addition, or deletion of an object instance is reflected in the underlying table(s) used to implement the object.
A database may be maintained for each of a number of systems. Each database may be associated with its own schema and meta data. The object instances created and maintained for each system may be accessed by various software applications executing on the system. These object instances may also be accessed by other applications executing on other systems. In this case, a mechanism is needed to ensure that up-to-date data stored in the database for a given system is provided when that database is accessed by another system.
to. Conventionally, this may be achieved by synchronizing the databases for these two systems, e.g., by copying the tables in the database. However, since different databases may be implemented using different schemas, this mechanism for ensuring data integrity may not be able to exchange (up-to-date) object instances.
As can be seen, techniques that can be used to track and exchange changes to hierarchical objects between systems having different schemas are highly desirable.